package cn.kgm.makeGod.action;

import cn.kgm.makeGod.Character;
import cn.kgm.makeGod.condition.EventResult;
import cn.kgm.makeGod.condition.WorldState;
import com.fasterxml.jackson.annotation.JsonSubTypes;
import com.fasterxml.jackson.annotation.JsonTypeInfo;

/**
 * @Version 1.8
 * @Author: Kappi
 * @Date: 2025-9-11 11:43
 * @Description: cn.kgm.makeGod.action.Action
 */

@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "type")
@JsonSubTypes({
        @JsonSubTypes.Type(value = DialogueAction.class, name = "dialogue"),
        @JsonSubTypes.Type(value = ChangeRelationshipAction.class, name = "change_relationship"),
        @JsonSubTypes.Type(value = RollSuccessAction.class, name = "roll_success")
})
public interface Action {
    void execute(Character actor, Character target, WorldState world, EventResult result);
}
